import java.util.Arrays;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: xiaotutu
 * Date: 2023-09-07
 * Time: 9:53
 */
public class Test {

    public static int findElement(int[] array) {
        //摩尔投票法
        int count = 0;
        int findElement = 0;
        for (int x:array) {
            if(count == 0) {
                findElement = x;
                count++;
            }else if(findElement == x) {
                count++;
            }else {
                count--;
            }
        }
        return findElement;
    }

    public static void main(String[] args) {

        int[] array = new int[]{2,2,1,1,1,2,2};
        System.out.println(findElement(array));
    }


    public static void main5(String[] args) {
        int[] array = {1,2,3};
        for (int x: array) {
            System.out.println(x);
        }
    }
    public static int findMajorityElement(int[] nums) {
        int count = 0;
        int majorityElement = 0;

        for (int num : nums) {
            if (count == 0) {
                majorityElement = num;
                count++;
            } else if (majorityElement == num) {
                count++;
            } else {
                count--;
            }
        }

        return majorityElement;
    }

    public static void main6(String[] args) {
        int[] nums = {3, 2, 3, 3, 4, 3, 5, 3};
        int majorityElement = findMajorityElement(nums);
        System.out.println("出现次数超过一半的元素是：" + majorityElement);
    }

    public static int singleNum(int[] array) {
        int ret = array[0];
        for (int i = 1; i < array.length; i++) {
            ret ^= array[i];
        }
        return ret;
    }

    public static int fun(int[] array) {
        Arrays.sort(array);
        return array[array.length/2];
    }

    public static boolean fun2(int[] array) {
        int count = 0;
        for (int i = 0; i < array.length; i++) {
            if(array[i] % 2 != 0) {
                count++;
                if(3 == count) {
                    return true;
                }
            }else {
                count = 0;
            }

        }
        return false;
    }

    public static void main3(String[] args) {
        //给你一个整数数组 arr，请你判断数组中是否存在连续三个元素都是奇数的情况：
        // 如果存在，请返回 true ；否则，返回 false 。
        //示例 1：
        //输入：arr = [2,6,4,1]
        //输出：false
        //解释：不存在连续三个元素都是奇数的情况。
        //示例 2：
        //输入：arr = [1,2,34,3,4,5,7,23,12]
        //输出：true
        //解释：存在连续三个元素都是奇数的情况，即 [5,7,23] 。
        int[] arr =new int[]{1,2,34,3,4,5,7,23,12};
        System.out.println(fun2(arr));
    }

    public static void main2(String[] args) {
        //给定一个大小为 n 的数组，找到其中的多数元素。
        // 多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
        //你可以假设数组是非空的，并且给定的数组总是存在多数元素。
        int[] array = new int[]{3,2,3};
        System.out.println(fun(array));
    }

    public static void main1(String[] args) {
        //给定一个非空整数数组，
        // 除了某个元素只出现一次以外，其余每个元素均出现两次。
        // 找出那个只出现了一次的元素。
        int[] array = new int[]{3,3,2};
        System.out.println(singleNum(array));

    }
}
